import os
from dotenv import load_dotenv

# 加载.env文件
load_dotenv()

class Config:
    """应用配置类"""
    # Flask配置
    SECRET_KEY = os.getenv('SECRET_KEY', 'dev')
    DEBUG = os.getenv('FLASK_DEBUG', '0') == '1'
    ENV = os.getenv('FLASK_ENV', 'production')
    
    # 应用信息
    APP_TITLE = os.getenv('APP_TITLE', 'StudyAtAI')
    APP_VERSION = os.getenv('APP_VERSION', '0.1.0')
    
    # 数据库配置
    SQLALCHEMY_DATABASE_URI = os.getenv('DATABASE_URL', 'sqlite:///app.db')
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    
    # 路径配置
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))  # 项目根目录
    USER_DATA_DIR = os.path.join(BASE_DIR, 'user_data')  # 用户数据根目录
    DATA_DIR = os.path.join(USER_DATA_DIR, 'data')  # 数据目录
    UPLOAD_DIR = os.path.join(USER_DATA_DIR, 'uploads')  # 上传文件目录
    PLUGIN_DATA_DIR = os.path.join(USER_DATA_DIR, 'plugins')  # 插件数据目录
    
    SRC_DIR = os.path.join(BASE_DIR, 'src')  # 源代码目录
    PLUGIN_DIR = os.path.join(SRC_DIR, 'plugins')  # 插件目录
    STATIC_DIR = os.path.join(SRC_DIR, 'static')  # 静态文件目录
    TEMPLATE_DIR = os.path.join(SRC_DIR, 'templates')  # 模板目录
    
    # 插件配置
    PLUGIN_ENABLED = os.getenv('PLUGIN_ENABLED', '1') == '1'
    DEFAULT_PLUGIN_CONFIG = {
        'enabled': True,
        'auto_load': True
    }
    
    # API配置
    API_PREFIX = '/api'
    DEFAULT_API_MODEL = 'deepseek-chat'
    
    @classmethod
    def init_app(cls, app):
        """初始化应用配置"""
        # 确保必要的目录存在
        for path in [cls.USER_DATA_DIR, cls.DATA_DIR, cls.UPLOAD_DIR, cls.PLUGIN_DATA_DIR]:
            if not os.path.exists(path):
                os.makedirs(path)
            
        # 配置静态文件和模板目录
        app.static_folder = cls.STATIC_DIR
        app.template_folder = cls.TEMPLATE_DIR
            
        # 如果使用SQLite，设置数据库路径
        if cls.SQLALCHEMY_DATABASE_URI.startswith('sqlite:///'):
            db_path = os.path.join(cls.DATA_DIR, 'app.db')
            cls.SQLALCHEMY_DATABASE_URI = f'sqlite:///{db_path}' 